UOS/深度系统安装鸿蒙OS北向应用开发IDE工具 DevEco Studio 2 Beta 3 | 您所在的位置:网站首页 › 鸿蒙os ide › UOS/深度系统安装鸿蒙OS北向应用开发IDE工具 DevEco Studio 2 Beta 3 |
求人不如求己,现在分享下我自己在Linux系统上安装鸿蒙OS北向应用开发IDE工具 DevEco Studio 2 Beta 3的经验:
预先安装好构建WINE的编译环境: sudo apt build-dep wine
下载wine源码 源码下载地址: https://dl.winehq.org/wine/source/ 当前最新版本是6.0,wine-6.0.tar.xz
////////////////////// 解压后进入到wine6.0的源码根目录创建两个子目录用来存放后面构建出来的程序文件: mkdir -p wine32 wine64 编译安装64位及32位wine cd wine64 ../configure --enable-win64 make -j 4 sudo make install --------------- cd ../wine32 ../configure --with-wine64=../wine64 make -j 4 sudo make install ///////////////////
设置wine的目录和硬件 rm -rf ~/.wine WINEPREFIX=~/.wine wine64 wineboot winecfg 启动wine配置程序设置Windows版本为win10 /////////////////// 安装中文字体
链接: https://pan.baidu.com/s/1SWTe1Dj485FTJSdKqI6QCA 密码: 4abj 下载后解压出所有字体文件,剪切到wine的c盘Windows/fonts目录内
///////////// 安装wine-mono和wine-gecko http://mirrors.ustc.edu.cn/wine/wine/wine-mono/5.1.1/wine-mono-5.1.1-x86.msi http://mirrors.ustc.edu.cn/wine/wine/wine-gecko/2.47.2/wine-gecko-2.47.2-x86_64.msi http://mirrors.ustc.edu.cn/wine/wine/wine-gecko/2.47.2/wine-gecko-2.47.2-x86.msi
wine msiexec /i wine-mono-5.1.1-x86.msi wine msiexec /i wine-gecko-2.47.2-x86_64.msi wine msiexec /i wine-gecko-2.47.2-x86.msi
///////////////////// 到鸿蒙OS官网下载北向IDE https://developer.harmonyos.com/cn/develop/deveco-studio#download devecostudio-windows-tool-2.0.12.201
因为这IDE安装程序是32位,所以以下目的是从win32安装包里拿到win64的ide程序, 还有个办法就是直接从装好的Windows机器里复制出ide的目录到深度系统。 安装deepin-wine5,深度的仓库里这个版本是wine32,深度v20.1目前linux-libc-dev:i386 和 linux-libc-dev:amd64无法同时存在,此种情况不知是个别还是都是这样的问题,所以我上面编译的wine32部分有些库没加全进去,如果你能顺利用上面编译的wine32启动DevEcoStudio的安装程序则不再需要再装deepin-wine5 sudo apt install deepin-wine5
然后打开应用商店安装【迅雷极速版】(wine), 这是为了借用deepin-wine5和迅雷极速版的环境启动deveco studio的安装程序, deveco-studio-2.0.12.201.exe这个安装程序是Nullsoft Installer 生成的自解压win32 GUI文档, 我在之前编译的wine64不能直接引导安装。
既然北向IDE下载页面已经明确需要win64环境就请直接提供win64的安装包好吧, 一个win32安装程序包着win64程序有意思么..
装好deepin-wine5后在解压出鸿蒙ide安装包程序的同级目录创建一个ins.sh: -------------------- #!/bin/bash wine=deepin-wine5 prefix_dir=${HOME}/.deepinwine/Deepin-ThunderSpeed WINEPREFIX=${prefix_dir} ${wine} ./deveco-studio-2.0.12.201.exe exit 0 -------------------- chmod +x ins.sh 双击ins.sh,选运行进入安装鸿蒙OS北向IDE
临时安装路径:deepin-wine5的c盘/Program/Huawei/DevEcoStudio,记得所有涉及路径的地方绝对不能有空格也不要有中文。 安装好北向ide后进入~/.deepin-wine的c盘,直接剪切移动Program目录到wine64的c盘,即是: ~/.wine/drive_c/Program/Huawei/DevEcoStudio/,这是IDE最终安装位置。 ///////////////////// 下载Nodejs Lts https://nodejs.org/dist/v14.15.4/node-v14.15.4-win-x64.zip 解压重命名到wine64的~/.wine/drive_c/Program/Huawei/nodejs
然后在wine64的~/.wine/drive_c/创建reg.sh: --------------------- #!/bin/bash wine regedit exit 0 --------------------- chmod +x reg.sh 双击reg.sh,选运行进入注册表找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 位置, 双击Path键名,修改键值,在最后位置添加 C:\Program\Huawei\nodejs;c:\Program\Huawei\DevEcoStudio\bin;%JAVA_HOME%\bin;%JAVA_HOME%\bin\jre\bin;c:\Program\Huawei\SDK\toolchains
键classpath值: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
键JAVA_HOME值: c:\Program\Huawei\DevEcoStudio\jbr ------------- 然后在cmd命令行里设置npm仓库地址 C:\>npm config set registry https://mirrors.huaweicloud.com/repository/npm/
cd ~/.wine/drive_c/Program/Huawei/nodejs mkdir -p node_global node_cache
在wine cmd或等后面ide能正常启动后再在ide的Terminal窗口里设置以下两项 设置 npm 全局包下载路径: npm config set prefix "c:\Program\Huawei\nodejs\node_global"
在wine cmd设置 npm 缓存路径: npm config set cache "c:\Program\Huawei\nodejs\node_cache"
验证nodejs npm info express
///////////////////////////// 进入wine64的~/.wine/drive_c/Program/Huawei/DevEcoStudio/bin 创建devecostudio.sh --------------------- #!/bin/bash wine=wine prefix_dir=${HOME}/.wine WINEPREFIX=${prefix_dir} ${wine} ${HOME}/.wine/drive_c/Program/Huawei/DevEcoStudio/bin/devecostudio64.exe exit 0 --------------------- chmod +x devecostudio.sh ///////////////////////////// 然后回到桌面右键选【在终端中打开】,在终端里用vim在桌面创建hos-ide.desktop快捷图标配置文件: --------------------- [Desktop Entry] Name=HOS IDE Type=Application Exec=bash /home/${USER}/.wine/drive_c/Program/Huawei/DevEcoStudio/bin/devecostudio.sh Terminal=false StartupNotify=true Icon=/home/${USER}/.wine/drive_c/Program/Huawei/DevEcoStudio/bin/devecostudio.svg X-Deepin-CreatedBy=com.deepin.dde.daemon.Launcher X-Deepin-AppID=DevEcoStudio Categories=System; Comment=DevEco Studio for Harmony OS; ---------------------- 注意其中的两个${USER}位置请务必替换成你在系统的用户名 ////////////////////////////////////////// 在~/.wine/drive_c/Program/Huawei/DevEcoStudio/bin/devecostudio64.exe.vmoptions 文件最后添加三行: -Dsun.jnu.encoding=UTF-8 -Dos.version=10.0 -Dos.name=Windows 10 ----------------------
保存后回到桌面双击deveco studio快捷图标启动deveco studio 2 beta 3。 //////////////////////////// 创建一个鸿蒙App(Java),然后修改gradle-wrapper.properties: distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://code.aliyun.com/kar/gradle-all-zip/raw/master/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
///////////////////
如果发现你的[File/invalidate cache/restart]的重启命令没法让ide自我重启的话,请按我的以下方法解决: 第一步,装好Golang编译环境。 下载 https://golang.org/dl/go1.15.7.linux-amd64.tar.gz 解压安装: sudo tar -C /usr/local -xzf go1.15.7.linux-amd64.tar.gz 将 /usr/local/go/bin 目录添加至PATH环境变量,譬如写在~/.bashrc最后: export PATH=$PATH:/usr/local/go/bin
第二步,重命名原来的restarter.exe为restarter32.exe,记得并不是删除,mv restarter.exe restarter32.exe 第三步,在~/.wine/drive_c/Program/Huawei/DevEcoStudio/bin目录下创建 restarter.go: ---------------------- package main import ( "fmt" "log" "os" "os/exec" "path/filepath" ) func main() { dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Fatalln(err) } err = os.Chdir(dir) if err != nil { log.Fatalln(err) } CallExc("taskkill", []string{"/f", "/im", "Previewer.exe"}) CallExc("taskkill", []string{"/f", "/im", "Simulator.exe"}) CallExc("taskkill", []string{"/f", "/im", "node.exe"}) CallExc("taskkill", []string{"/f", "/im", "java.exe"}) CallExc("restarter32", os.Args[1:]) } func CallExc(proc string, args []string) { cmd := exec.Command(proc, args...) b, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(b)) return } ---------------------- 执行交叉编译命令: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o restarter.exe restarter.go --------------------------------------------------------------------------------------------- 则会在同级目录生成64位的Windows程序restarter.exe 这样就修复了ide在Linux上无法重启的bug。 --------------------------------------------------------------------------------------------- 下面我们更进一步 写一个引导程序【devecostudio.exe】来监控ide主程序【devecostudio64.exe】, 但有退出,则自动关闭尚未自行退出的相关进程 在~/.wine/drive_c/Program/Huawei/DevEcoStudio/bin目录下创建 devecostudio.go : package main import ( "fmt" "log" "os" "os/exec" "path/filepath" "strconv" "strings" "time" ) func main() { dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Fatalln(err) } err = os.Chdir(dir) if err != nil { log.Fatalln(err) } if isProcessExistNix("systemd") { CallExc("killall", []string{"-9", "wineserver"}) } else { kills() CallExc("devecostudio64", os.Args[1:]) for { time.Sleep(time.Minute) if b, _, _ := isProcessExistWin("devecostudio64.exe"); !b { kills() os.Exit(0) } } } } func kills() { CallExc("taskkill", []string{"/f", "/im", "Previewer.exe"}) CallExc("taskkill", []string{"/f", "/im", "Simulator.exe"}) CallExc("taskkill", []string{"/f", "/im", "node.exe"}) CallExc("taskkill", []string{"/f", "/im", "java.exe"}) if b, _, _ := isProcessExistWin("winedevice.exe"); b { CallExc("taskkill", []string{"/f", "/im", "*.exe"}) } } func isProcessExistNix(appName string) bool { cmd := exec.Command("ps", "-C", appName) output, _ := cmd.CombinedOutput() fields := strings.Fields(string(output)) for _, v := range fields { if v == appName { return true } } return false } func isProcessExistWin(appName string) (bool, string, int) { appary := make(map[string]int) cmd := exec.Command("cmd", "/C", "tasklist") output, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Printf("fields: %v\n", output) n := strings.Index(string(output), "System") if n == -1 { log.Println(fmt.Errorf("%s file not found in proc", appName)) return false, appName, -1 } data := string(output)[n:] fields := strings.Fields(data) for k, v := range fields { if v == appName { appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName] } } return false, appName, -1 } func CallExc(proc string, args []string) { cmd := exec.Command(proc, args...) b, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(b)) return }----------------------------------------
执行交叉编译命令: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o devecostudio.exe devecostudio.go --------------------------------------------------------------------------------------------- 修改devecostudio.sh --------------------- #!/bin/bash wine=wine prefix_dir=${HOME}/.wine WINEPREFIX=${prefix_dir} ${wine} ${HOME}/.wine/drive_c/Program/Huawei/DevEcoStudio/bin/devecostudio.exe exit 0 --------------------------------------------------------------------------------------------- 以后如果主程序退出后还有残余进程没退出,devecostudio.exe就会自动关闭并自行退出。 搞定~ ---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
原标题:有Wine高手可以成功运行鸿蒙OS的Win版ide吗? 如题,我想在UOS/Deepin上做鸿蒙OS开发,通过系统附带的deepin-wine我成功启动并安装了deveco studio, 但是启动时犯难了,报了一个error 2什么的错误。 启动配置:
|
CopyRight 2018-2019 实验室设备网 版权所有 |